I2C (Inter-Integrated Circuit) একটি কম্পিউনিকেশন প্রোটোকল যা একাধিক ডিভাইসের মধ্যে ডেটা আদান-প্রদানের জন্য ব্যবহৃত হয়। এটি মূলত সংক্ষিপ্ত দূরত্বে বিভিন্ন ডিভাইসকে সংযুক্ত করার জন্য ডিজাইন করা হয়েছে এবং সাধারণত সেন্সর, মেমরি চিপ, মাইক্রোকন্ট্রোলার ইত্যাদি ডিভাইসের মধ্যে ডেটা ট্রান্সফারে ব্যবহৃত হয়।
I2C যোগাযোগের সময় একটি ডিভাইস মাস্টার হিসেবে কাজ করে এবং অন্যান্য ডিভাইস স্লেভ হিসেবে কাজ করে। মাস্টার ডিভাইস SDA এবং SCL লাইনের মাধ্যমে ডেটা এবং ক্লক সংকেত পাঠায়। স্লেভ ডিভাইসগুলি মাস্টার ডিভাইসের সিগন্যাল অনুসরণ করে ডেটা পাঠায় বা গ্রহণ করে।
কমিউনিকেশন প্রক্রিয়া:
Arduino তে I2C কমিউনিকেশন পরিচালনা করতে Wire লাইব্রেরি ব্যবহার করা হয়। এটি I2C ডিভাইসের সাথে সহজে যোগাযোগ স্থাপন করতে সহায়তা করে।
Arduino তে I2C ব্যবহার করার জন্য Wire.h
লাইব্রেরি ব্যবহার করা হয়। উদাহরণ:
মাস্টার ডিভাইস কোড:
#include <Wire.h>
void setup() {
Wire.begin(); // I2C মাস্টার হিসেবে শুরু
Serial.begin(9600);
}
void loop() {
Wire.beginTransmission(8); // স্লেভ ডিভাইসের ঠিকানা (8)
Wire.write("Hello"); // ডেটা পাঠানো
Wire.endTransmission(); // ট্রান্সমিশন শেষ
delay(1000);
}
স্লেভ ডিভাইস কোড:
#include <Wire.h>
void setup() {
Wire.begin(8); // স্লেভ হিসেবে শুরু, ঠিকানা 8
Wire.onReceive(receiveEvent); // ডেটা গ্রহণের ইভেন্ট সেট করা
Serial.begin(9600);
}
void receiveEvent(int howMany) {
while (Wire.available()) {
char c = Wire.read(); // ডেটা পড়া
Serial.print(c);
}
Serial.println();
}
void loop() {
// স্লেভ লুপে কিছু করবে না
}
I2C কমিউনিকেশন Arduino এবং অন্যান্য ডিভাইসের মধ্যে ডেটা আদান-প্রদানের জন্য একটি নির্ভরযোগ্য এবং কার্যকর মাধ্যম। এটি বিভিন্ন প্রোজেক্টে সেন্সর, ডিসপ্লে এবং অন্যান্য মডিউল সংযুক্ত করতে বহুল ব্যবহৃত হয়।
common.read_more